package cn.com.surker.system.service;

import cn.com.surker.system.entity.SysOrigin;
import cn.com.surker.system.entity.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * @author luotao
 * @date 2022/11/1
 */
public interface IErpOriginService extends IService<SysOrigin> {
	/**
	 * 迭代查询组织机构
	 *
	 * @param originId 部门id
	 * @return
	 */
	List<SysOrigin> relationOriginList(Long originId);

	/**
	 * 根据ID查询部门
	 *
	 * @param id
	 * @return
	 */
	SysOrigin queryById(Long id);


	List<SysOrigin> relationOriginList(List<Long> originIds);


	/**
	 * 迭代查询用户关联的所有组织机构,第一个为驰旭集团
	 *
	 * @param userId
	 * @return
	 */
	List<SysOrigin> relationUserOrgList(Long userId);

	/**
	 * 迭代查询部门下的用户
	 *
	 * @param orgId  部门id
	 * @param name   用户名
	 * @param phone  手机号
	 * @param status 用户状态
	 * @return
	 */
	List<SysUser> relationOriginUserList(Long orgId, String name, String phone, Integer status);

	/**
	 * 迭代查询部门下的用户
	 *
	 * @param origin 组织机构实例
	 * @param name
	 * @param phone
	 * @param status
	 * @return
	 */
	List<SysUser> relationOriginUserList(SysOrigin origin, String name, String phone, Integer status);

	/**
	 * 迭代查询部门下用户
	 *
	 * @param orgs   组织机构列表
	 * @param name
	 * @param phone
	 * @param status
	 * @return
	 */
	List<SysUser> relationOriginUserList(List<SysOrigin> orgs, String name, String phone, Integer status);

	/**
	 * 迭代查询用户的岗位-部门-站点
	 *
	 * @param userId
	 * @return
	 */
	List<Map<String, Object>> userPositionOrg(Long userId);

	List<SysOrigin> findAll(SysOrigin dto);

	List<Map<String, Object>> findUserOrigin(Integer type, Integer status, Long uid);

	/**
	 * 根据用户名查询用户关联站点
	 *
	 * @param uid
	 * @return
	 */
	List<SysOrigin> queryByUidOrigin(Long uid);

	/**
	 * 获取组织机构的id列表
	 *
	 * @param origins
	 * @return
	 */
	List<Long> relaOrgIds(List<SysOrigin> origins);

	/**
	 * 根据部门获取站点
	 *
	 * @param deptId
	 * @return
	 */
	SysOrigin queryOrgByDept(Long deptId);

	List<SysOrigin> findDepts(Long parentOrgId, Long userId);

	/**
	 * 检查用户是否关联数据源
	 *
	 * @param uid
	 * @return
	 */
	Integer checkUserData(Long uid);
}
